
\chapter{Conclusion}
The aim of this work was to explore existing approaches for the design patterns 
support in development environments and to present the Patterns4Net project. 
Most of the existing tools for the support of design patterns enabled development 
target Java platform or C++, but Patterns4Net provides this form of support for 
the .NET platform. With Patterns4Net users can explicitly document their 
intent to implement a particular design pattern. Pattern Enforcer, part of 
the Patterns4Net project, is able to verify some of the structural aspects 
of selected design patterns. The second tool included in Patterns4Net is 
Architecture Explorer, which provides interactive UML-like class diagrams 
that emphasize implemented design patterns. 
%%%\section{Future Work}
%%%\paragraph*{LePUS3 support.}
%%%\paragraph*{Dynamical enforcement with Code Contracts.}
%%%\paragraph*{Improvements in Architecture Explorer UI.}

Patterns4Net might enhance the development process of complex design patterns 
oriented systems that are created by a larger team, 
because it helps to discover communication errors and violations of 
design patterns implementations earlier and it provides visual tool to 
tackle some of the design complexity that is caused by design patterns usage.  

During the development and testing of Architecture Explorer, it turned out 
that rules for hiding and displaying various elements in the diagram in 
order to provide better abstraction are crucial for the appropriate user 
experience. These rules should be reevaluated after more extensive testing 
on real projects. Architecture Explorer user interface could be also 
enhanced to provide more additional information, for example, for every 
relationship it could show a panel with detailed information on 
which code fragments lead to establishing this relationship during 
the reverse engineering phase. Finally, the attributes for Graphviz can be 
fine-tuned to avoid some not so nice looking graphs (e.g., when a high 
number of classes inherit from the same parent, or when there are 
many orphan nodes in the graph).

Some of the more general rules from Pattern Enforcer, such as immutability 
check, could be extracted from it's source and proposed to open-source community 
as additional rules for well-established open-source project Gendarme, which 
is an extensible rule-based tool used to find problematic code in .NET assemblies. 

Software systems are getting larger and more complex and this trend will 
continue. Changes in requirements are usual and reusability is important. 
Design patterns provide widely accepted approach for 
tackling the complexity of large systems and with tools such 
as Patterns4Net we can get even more advantages from their usage. 




